<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width= , initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  // 递归 => 函数在执行过程中调用了自身,称为递归调用

  // 特点: 类似循环 重复的执行函数中的代码段

  // 注意: 递归一定要有跳出条件(临界值) => 满足条件时递归,不满足条件时 跳出

  // 报错:RangeError: Maximum call stack size exceeded  超过了最大调用堆栈大小 
  // 函数在执行过程中一直调用自身 => 函数无法执行完毕 并释放 => 死递归
  // function fn(){
  //     console.log("hello everyone!");
  //     fn();
  // }
  // fn();

  // 对比死循环   => 循环可以依靠break停止
  // var i = 1;
  // while(true){
  //     console.log("hello everyone!",i);
  //     if(i>=100){
  //         break;
  //     }
  //     i++;
  // }

  // 对比递归   =>  递归可以依靠return终止
  var i = 1;
  function fn() {
    console.log("hello everyone!", i);
    if (i >= 100) {
      return false;
    }
    i++;
    fn();
  }
  fn();




</script>

</html>